home *** CD-ROM | disk | FTP | other *** search
/ Disc to the Future 2 / Disc to the Future Part II Programmer's Reference (Wayzata Technology)(6013)(1992).bin / MAC / THINKC / 4_0 / 3DMAZE / MOVEINMA.C < prev    next >
Text File  |  1991-02-16  |  3KB  |  155 lines

  1. /******************************************************
  2. *
  3. *    MoveInMaze.c  v. 1.0
  4. *    1991 By Mark Frohnmayer
  5. *
  6. *    NOTE - This header must appear at the beginning of all 3-D maze files!
  7. *
  8. *    If you have any comments or recommended modifications for this code,
  9. *    email me on America On-Line at "Mark Frohn" or snail mail me at:
  10. *
  11. *            Mark Frohnmayer
  12. *            2875 Baker Blvd
  13. *            Eugene, OR 97403 
  14. *
  15. *    If you use this code in any program, commercial or otherwise, give
  16. *    me credit in the about box.
  17. *
  18. *    THIS CODE MAY NOT BE SOLD OR DISTRIBUTED AT COST OR AS PART OF SOLD
  19. *    PACKAGE WITHOUT PRIOR WRITTEN CONSENT OF THE AUTHOR.
  20. *
  21. ******************************************************/
  22.  
  23. #include "MazeData.h"
  24.  
  25. MoveForward()
  26. {
  27.     switch(u.facing) {
  28.         case 0:
  29.             if(!maze[u.y -1][u.x])
  30.                 u.y --;
  31.             break;
  32.         case 1:
  33.             if(!maze[u.y][u.x+1])
  34.                 u.x ++;
  35.             break;
  36.         case 2:
  37.             if(!maze[u.y + 1][u.x])
  38.                 u.y ++;
  39.             break;
  40.         case 3:
  41.             if(!maze[u.y][u.x-1])
  42.                 u.x--;
  43.             break;
  44.     }
  45.     SetView();
  46.     DrawMaze();
  47. }
  48.  
  49. TurnLeft()
  50. {
  51.     u.facing--;
  52.     if(u.facing < 0) u.facing = 3;
  53.     SetView();
  54.     DrawMaze();
  55. }
  56.  
  57. TurnRight()
  58. {
  59.     u.facing++;
  60.     if(u.facing > 3) u.facing = 0;
  61.     SetView();
  62.     DrawMaze();
  63. }
  64.  
  65. TurnAround()
  66. {
  67.     u.facing +=2;
  68.     if(u.facing > 3) u.facing -= 4;
  69.     SetView();
  70.     DrawMaze();
  71. }
  72.  
  73. SetView()
  74. {
  75.     char theRows[5][4];
  76.     register int mx, my, i, j;
  77.     switch(u.facing) {
  78.         case 0:
  79.             for(j = 0; j < 2; j++) {
  80.                 for(i = 0; i < 5; i++) {
  81.                     mx = u.x - 2 + i;
  82.                     my = u.y - 3 + j;
  83.                     if(mx < 0 || mx > 15 || my < 0 || my > 15) {
  84.                         uview.rows[i][j] = 0;
  85.                     } else {
  86.                         uview.rows[i][j] = maze[my][mx];
  87.                     }
  88.                 }
  89.             }
  90.             for(j = 2; j < 4; j++) {
  91.                 for(i = 1; i < 4; i++) {
  92.                     mx = u.x - 2 + i;
  93.                     my = u.y - 3 + j;
  94.                     if(mx < 0 || mx > 15 || my < 0 || my > 15) {
  95.                         uview.rows[i][j] = 0;
  96.                     } else {
  97.                         uview.rows[i][j] = maze[my][mx];
  98.                     }
  99.                 }
  100.             }
  101.             break;
  102.         case 1:
  103.             for(i = 3; i > -1; i --) {
  104.             mx = u.x + i;
  105.             for(j = 0; j<5; j++) {
  106.                 my = u.y - 2 + j;
  107.                 if(mx < 0 || mx > 15 || my < 0 || my > 15) {
  108.                     uview.rows[j][-i + 3] = 0;
  109.                 } else {
  110.                     uview.rows[j][-i + 3] = maze[my][mx];
  111.                 }
  112.             }
  113.             }
  114.             break;
  115.         case 2:
  116.             for(j = 0; j < 4; j ++) {
  117.                 my = u.y + 3 - j;
  118.                 for(i = 0; i<5; i++) {
  119.                     mx = u.x - 2 + i;
  120.                     if(mx < 0 || mx > 15 || my < 0 || my > 15) {
  121.                         uview.rows[4-i][j] = 0;
  122.                     } else {
  123.                         uview.rows[4-i][j] = maze[my][mx];
  124.                     }
  125.                 }
  126.             }
  127.             break;
  128.         case 3:
  129.             for(i = 0; i < 4; i ++) {
  130.             mx = u.x - 3 + i;
  131.             for(j = 0; j<5; j++) {
  132.                 my = u.y - 2 + j;
  133.                 if(mx < 0 || mx > 15 || my < 0 || my > 15) {
  134.                     uview.rows[4-j][i] = 0;
  135.                 } else {
  136.                     uview.rows[4-j][i] = maze[my][mx];
  137.                 }
  138.             }
  139.             }
  140.             break;
  141.         }
  142. }
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.